#include "../include/server.h"

int mycd(int sockFd, char *dirpath){
    //=======切换到dirpath目录下=======
    //1、如果目录存在，进行切换，并把切换后的路径发送给客户端
    //（1）获取当前工作路径，打开目录，遍历文件流
    char curPath[64] = {0};
    char sendPath[128] = {0};
    char flag[2] = {'u'};
    getcwd(curPath, sizeof(curPath));
    DIR *pdir = opendir(curPath);   //打开目录，得到文件流
    ERROR_CHECK(pdir, NULL, "opendir");
    struct dirent *pdirent;//文件流中的项的指针
    
    //遍历文件流
    while((pdirent = readdir(pdir)) != NULL){
        if(strcmp(pdirent->d_name, ".") == 0
           || strcmp(pdirent->d_name, "..") == 0){
            //跳过本目录和上一层目录
            continue;
        }
        if(pdirent->d_type == DT_DIR && !strcmp(pdirent->d_name, dirpath)){
            //如果找到了，把拼接后的目录发送给客户端，返回1
            flag[0] = 'a';
            send(sockFd, &flag, 1, 0);
            sprintf(sendPath, "%s/%s", curPath, dirpath);
            send(sockFd, sendPath, strlen(sendPath), 0);
            printf("sendPath = %s\n", sendPath);
            return 1;
        }
        else{
            continue;
        }
    }

    //如果目录不存在，要求客户端输入正确的路径
    if(pdirent == NULL){
        printf("illegal path!\n");
        flag[0] = 'u';
        send(sockFd, &flag, 1, 0);
    }
    return 0;
}

